home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / plaf / metal / MetalFileChooserUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  14.5 KB  |  422 lines

  1. package javax.swing.plaf.metal;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Container;
  5. import java.awt.Dimension;
  6. import java.awt.Insets;
  7. import java.awt.event.MouseListener;
  8. import java.beans.PropertyChangeListener;
  9. import java.io.File;
  10. import javax.swing.AbstractButton;
  11. import javax.swing.Action;
  12. import javax.swing.Box;
  13. import javax.swing.BoxLayout;
  14. import javax.swing.JButton;
  15. import javax.swing.JComboBox;
  16. import javax.swing.JComponent;
  17. import javax.swing.JFileChooser;
  18. import javax.swing.JLabel;
  19. import javax.swing.JList;
  20. import javax.swing.JPanel;
  21. import javax.swing.JScrollPane;
  22. import javax.swing.JTextField;
  23. import javax.swing.JToggleButton;
  24. import javax.swing.UIManager;
  25. import javax.swing.event.ListSelectionEvent;
  26. import javax.swing.plaf.ComponentUI;
  27. import javax.swing.plaf.basic.BasicFileChooserUI;
  28.  
  29. public class MetalFileChooserUI extends BasicFileChooserUI {
  30.    private JPanel centerPanel;
  31.    private JComboBox directoryComboBox;
  32.    private DirectoryComboBoxModel directoryComboBoxModel;
  33.    private Action directoryComboBoxAction = new DirectoryComboBoxAction(this);
  34.    private FilterComboBoxModel filterComboBoxModel;
  35.    private JTextField filenameTextField;
  36.    private JList list;
  37.    private JButton approveButton;
  38.    private JButton cancelButton;
  39.    private JComboBox filterComboBox;
  40.    private JPanel bodyPanel = null;
  41.    private static final Dimension hstrut10 = new Dimension(10, 1);
  42.    private static final Dimension hstrut25 = new Dimension(25, 1);
  43.    private static final Dimension vstrut2 = new Dimension(1, 2);
  44.    private static final Dimension vstrut10 = new Dimension(1, 10);
  45.    private static final Dimension vstrut15 = new Dimension(1, 15);
  46.    private static final Dimension vstrut20 = new Dimension(1, 20);
  47.    private static final Insets shrinkwrap = new Insets(0, 0, 0, 0);
  48.    private static int PREF_WIDTH = 500;
  49.    private static int PREF_HEIGHT = 300;
  50.    private static Dimension PREF_SIZE;
  51.    private static int MIN_WIDTH;
  52.    private static int MIN_HEIGHT;
  53.    private static Dimension MIN_SIZE;
  54.    private static int LIST_MIN_WIDTH;
  55.    private static int LIST_MIN_HEIGHT;
  56.    private static Dimension LIST_MIN_SIZE;
  57.    private int lookInLabelMnemonic = 0;
  58.    private String lookInLabelText = null;
  59.    private int fileNameLabelMnemonic = 0;
  60.    private String fileNameLabelText = null;
  61.    private int filesOfTypeLabelMnemonic = 0;
  62.    private String filesOfTypeLabelText = null;
  63.    private String upFolderToolTipText = null;
  64.    private String upFolderAccessibleName = null;
  65.    private String homeFolderToolTipText = null;
  66.    private String homeFolderAccessibleName = null;
  67.    private String newFolderToolTipText = null;
  68.    private String newFolderAccessibleName = null;
  69.    private String listViewButtonToolTipText = null;
  70.    private String listViewButtonAccessibleName = null;
  71.    private String detailsViewButtonToolTipText = null;
  72.    private String detailsViewButtonAccessibleName = null;
  73.    int lastIndex = -1;
  74.    boolean editing = false;
  75.    int editX = 20;
  76.    int editWidth = 200;
  77.    JTextField editCell = null;
  78.    static final int space = 10;
  79.  
  80.    static {
  81.       PREF_SIZE = new Dimension(PREF_WIDTH, PREF_HEIGHT);
  82.       MIN_WIDTH = 400;
  83.       MIN_HEIGHT = 200;
  84.       MIN_SIZE = new Dimension(MIN_WIDTH, MIN_HEIGHT);
  85.       LIST_MIN_WIDTH = 400;
  86.       LIST_MIN_HEIGHT = 100;
  87.       LIST_MIN_SIZE = new Dimension(LIST_MIN_WIDTH, LIST_MIN_HEIGHT);
  88.    }
  89.  
  90.    public MetalFileChooserUI(JFileChooser var1) {
  91.       super(var1);
  92.    }
  93.  
  94.    // $FF: synthetic method
  95.    static JButton access$0(MetalFileChooserUI var0) {
  96.       return var0.approveButton;
  97.    }
  98.  
  99.    // $FF: synthetic method
  100.    static JButton access$1(MetalFileChooserUI var0) {
  101.       return var0.cancelButton;
  102.    }
  103.  
  104.    // $FF: synthetic method
  105.    static void access$2(MetalFileChooserUI var0) {
  106.       var0.cancelEdit();
  107.    }
  108.  
  109.    // $FF: synthetic method
  110.    static void access$3(MetalFileChooserUI var0) {
  111.       var0.resetEditIndex();
  112.    }
  113.  
  114.    // $FF: synthetic method
  115.    static JList access$4(MetalFileChooserUI var0) {
  116.       return var0.list;
  117.    }
  118.  
  119.    // $FF: synthetic method
  120.    static DirectoryComboBoxModel access$5(MetalFileChooserUI var0) {
  121.       return var0.directoryComboBoxModel;
  122.    }
  123.  
  124.    // $FF: synthetic method
  125.    static void access$6(MetalFileChooserUI var0, int var1) {
  126.       var0.setEditIndex(var1);
  127.    }
  128.  
  129.    // $FF: synthetic method
  130.    static JComboBox access$7(MetalFileChooserUI var0) {
  131.       return var0.directoryComboBox;
  132.    }
  133.  
  134.    private void cancelEdit() {
  135.       this.editing = false;
  136.       if (this.editCell != null) {
  137.          this.list.remove(this.editCell);
  138.       }
  139.  
  140.    }
  141.  
  142.    protected DirectoryComboBoxModel createDirectoryComboBoxModel(JFileChooser var1) {
  143.       return new DirectoryComboBoxModel(this);
  144.    }
  145.  
  146.    protected DirectoryComboBoxRenderer createDirectoryComboBoxRenderer(JFileChooser var1) {
  147.       return new DirectoryComboBoxRenderer(this);
  148.    }
  149.  
  150.    protected FilterComboBoxModel createFilterComboBoxModel() {
  151.       return new FilterComboBoxModel(this);
  152.    }
  153.  
  154.    protected FilterComboBoxRenderer createFilterComboBoxRenderer() {
  155.       return new FilterComboBoxRenderer(this);
  156.    }
  157.  
  158.    protected JPanel createList(JFileChooser var1) {
  159.       JPanel var2 = new JPanel(new BorderLayout());
  160.       this.list = new JList();
  161.       this.list.setCellRenderer(new FileRenderer(this));
  162.       this.list.setModel(((BasicFileChooserUI)this).getModel());
  163.       this.list.addListSelectionListener(((BasicFileChooserUI)this).createListSelectionListener(var1));
  164.       this.list.addMouseListener(((BasicFileChooserUI)this).createDoubleClickListener(var1, this.list));
  165.       this.list.addMouseListener(this.createSingleClickListener(var1, this.list));
  166.       JScrollPane var3 = new JScrollPane(this.list);
  167.       ((Container)var2).add(var3, "Center");
  168.       return var2;
  169.    }
  170.  
  171.    public PropertyChangeListener createPropertyChangeListener(JFileChooser var1) {
  172.       return new 4(this);
  173.    }
  174.  
  175.    private MouseListener createSingleClickListener(JFileChooser var1, JList var2) {
  176.       return new SingleClickListener(this, var2);
  177.    }
  178.  
  179.    public static ComponentUI createUI(JComponent var0) {
  180.       return new MetalFileChooserUI((JFileChooser)var0);
  181.    }
  182.  
  183.    public void ensureFileIsVisible(JFileChooser var1, File var2) {
  184.       if (((BasicFileChooserUI)this).getModel().contains(var2)) {
  185.          this.list.ensureIndexIsVisible(((BasicFileChooserUI)this).getModel().indexOf(var2));
  186.       }
  187.  
  188.    }
  189.  
  190.    protected JButton getApproveButton(JFileChooser var1) {
  191.       return this.approveButton;
  192.    }
  193.  
  194.    public String getDirectoryName() {
  195.       return null;
  196.    }
  197.  
  198.    public String getFileName() {
  199.       return this.filenameTextField != null ? this.filenameTextField.getText() : null;
  200.    }
  201.  
  202.    public Dimension getMaximumSize(JComponent var1) {
  203.       return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
  204.    }
  205.  
  206.    public Dimension getMinimumSize(JComponent var1) {
  207.       return MIN_SIZE;
  208.    }
  209.  
  210.    public Dimension getPreferredSize(JComponent var1) {
  211.       return PREF_SIZE;
  212.    }
  213.  
  214.    public void installComponents(JFileChooser var1) {
  215.       ((Container)var1).setLayout(new BoxLayout(var1, 1));
  216.       ((Container)var1).add(Box.createRigidArea(vstrut10));
  217.       JPanel var2 = new JPanel();
  218.       ((Container)var2).setLayout(new BoxLayout(var2, 0));
  219.       ((Container)var1).add(var2);
  220.       ((Container)var1).add(Box.createRigidArea(vstrut10));
  221.       JLabel var3 = new JLabel(this.lookInLabelText);
  222.       var3.setDisplayedMnemonic(this.lookInLabelMnemonic);
  223.       ((JComponent)var3).setAlignmentX(0.0F);
  224.       ((JComponent)var3).setAlignmentY(0.5F);
  225.       ((Container)var2).add(Box.createRigidArea(hstrut10));
  226.       ((Container)var2).add(var3);
  227.       ((Container)var2).add(Box.createRigidArea(hstrut25));
  228.       this.directoryComboBox = new JComboBox();
  229.       this.directoryComboBox.putClientProperty("JComboBox.lightweightKeyboardNavigation", "Lightweight");
  230.       var3.setLabelFor(this.directoryComboBox);
  231.       this.directoryComboBoxModel = this.createDirectoryComboBoxModel(var1);
  232.       this.directoryComboBox.setModel(this.directoryComboBoxModel);
  233.       this.directoryComboBox.addActionListener(this.directoryComboBoxAction);
  234.       this.directoryComboBox.setRenderer(this.createDirectoryComboBoxRenderer(var1));
  235.       this.directoryComboBox.setAlignmentX(0.0F);
  236.       this.directoryComboBox.setAlignmentY(0.5F);
  237.       ((Container)var2).add(this.directoryComboBox);
  238.       ((Container)var2).add(Box.createRigidArea(hstrut10));
  239.       JButton var4 = new JButton(super.upFolderIcon);
  240.       ((JComponent)var4).setToolTipText(this.upFolderToolTipText);
  241.       var4.getAccessibleContext().setAccessibleName(this.upFolderAccessibleName);
  242.       ((JComponent)var4).setAlignmentX(0.0F);
  243.       ((JComponent)var4).setAlignmentY(0.5F);
  244.       ((AbstractButton)var4).setMargin(shrinkwrap);
  245.       ((AbstractButton)var4).addActionListener(((BasicFileChooserUI)this).getChangeToParentDirectoryAction());
  246.       ((Container)var2).add(var4);
  247.       ((Container)var2).add(Box.createRigidArea(hstrut10));
  248.       var4 = new JButton(super.homeFolderIcon);
  249.       ((JComponent)var4).setToolTipText(this.homeFolderToolTipText);
  250.       var4.getAccessibleContext().setAccessibleName(this.homeFolderAccessibleName);
  251.       ((JComponent)var4).setAlignmentX(0.0F);
  252.       ((JComponent)var4).setAlignmentY(0.5F);
  253.       ((AbstractButton)var4).setMargin(shrinkwrap);
  254.       ((AbstractButton)var4).addActionListener(((BasicFileChooserUI)this).getGoHomeAction());
  255.       ((Container)var2).add(var4);
  256.       ((Container)var2).add(Box.createRigidArea(hstrut10));
  257.       var4 = new JButton(super.newFolderIcon);
  258.       ((JComponent)var4).setToolTipText(this.newFolderToolTipText);
  259.       var4.getAccessibleContext().setAccessibleName(this.newFolderAccessibleName);
  260.       ((JComponent)var4).setAlignmentX(0.0F);
  261.       ((JComponent)var4).setAlignmentY(0.5F);
  262.       ((AbstractButton)var4).setMargin(shrinkwrap);
  263.       ((AbstractButton)var4).addActionListener(((BasicFileChooserUI)this).getNewFolderAction());
  264.       ((Container)var2).add(var4);
  265.       ((Container)var2).add(Box.createRigidArea(hstrut10));
  266.       JToggleButton var5 = new JToggleButton(super.listViewIcon);
  267.       ((JComponent)var5).setToolTipText(this.listViewButtonToolTipText);
  268.       var5.getAccessibleContext().setAccessibleName(this.listViewButtonAccessibleName);
  269.       ((AbstractButton)var5).setEnabled(false);
  270.       ((JComponent)var5).setAlignmentX(0.0F);
  271.       ((JComponent)var5).setAlignmentY(0.5F);
  272.       ((AbstractButton)var5).setMargin(shrinkwrap);
  273.       ((Container)var2).add(var5);
  274.       var5 = new JToggleButton(super.detailsViewIcon);
  275.       ((JComponent)var5).setToolTipText(this.detailsViewButtonToolTipText);
  276.       var5.getAccessibleContext().setAccessibleName(this.detailsViewButtonAccessibleName);
  277.       ((AbstractButton)var5).setSelected(true);
  278.       ((AbstractButton)var5).setEnabled(false);
  279.       ((JComponent)var5).setAlignmentX(0.0F);
  280.       ((JComponent)var5).setAlignmentY(0.5F);
  281.       ((AbstractButton)var5).setMargin(shrinkwrap);
  282.       ((Container)var2).add(var5);
  283.       ((Container)var2).add(Box.createRigidArea(hstrut10));
  284.       this.centerPanel = new JPanel(new BorderLayout());
  285.       JPanel var6 = this.createList(var1);
  286.       ((JComponent)var6).setMinimumSize(LIST_MIN_SIZE);
  287.       this.centerPanel.add(var6, "Center");
  288.       this.centerPanel.add(((BasicFileChooserUI)this).getAccessoryPanel(), "East");
  289.       JComponent var7 = var1.getAccessory();
  290.       if (var7 != null) {
  291.          ((BasicFileChooserUI)this).getAccessoryPanel().add(var7);
  292.       }
  293.  
  294.       ((Container)var1).add(this.centerPanel);
  295.       JPanel var8 = new JPanel();
  296.       ((Container)var8).setLayout(new BoxLayout(var8, 0));
  297.       ((Container)var8).add(Box.createRigidArea(hstrut10));
  298.       ((Container)var1).add(Box.createRigidArea(vstrut10));
  299.       ((Container)var1).add(var8);
  300.       ((Container)var1).add(Box.createRigidArea(vstrut10));
  301.       JPanel var9 = new JPanel();
  302.       ((Container)var9).setLayout(new BoxLayout(var9, 1));
  303.       JLabel var10 = new JLabel(this.fileNameLabelText);
  304.       var10.setDisplayedMnemonic(this.fileNameLabelMnemonic);
  305.       ((JComponent)var10).setAlignmentY(0.0F);
  306.       ((Container)var9).add(var10);
  307.       ((Container)var9).add(Box.createRigidArea(vstrut20));
  308.       JLabel var11 = new JLabel(this.filesOfTypeLabelText);
  309.       var11.setDisplayedMnemonic(this.filesOfTypeLabelMnemonic);
  310.       ((Container)var9).add(var11);
  311.       ((Container)var8).add(var9);
  312.       ((Container)var8).add(Box.createRigidArea(hstrut25));
  313.       JPanel var12 = new JPanel();
  314.       ((Container)var12).setLayout(new BoxLayout(var12, 1));
  315.       ((Container)var12).add(Box.createRigidArea(vstrut2));
  316.       this.filenameTextField = new 1();
  317.       var10.setLabelFor(this.filenameTextField);
  318.       this.filenameTextField.addActionListener(((BasicFileChooserUI)this).getApproveSelectionAction());
  319.       File var13 = var1.getSelectedFile();
  320.       if (var13 != null) {
  321.          this.setFileName(var1.getName(var13));
  322.       }
  323.  
  324.       ((Container)var12).add(this.filenameTextField);
  325.       ((Container)var12).add(Box.createRigidArea(vstrut15));
  326.       this.filterComboBoxModel = this.createFilterComboBoxModel();
  327.       ((JComponent)var1).addPropertyChangeListener(this.filterComboBoxModel);
  328.       this.filterComboBox = new JComboBox(this.filterComboBoxModel);
  329.       var11.setLabelFor(this.filterComboBox);
  330.       this.filterComboBox.setRenderer(this.createFilterComboBoxRenderer());
  331.       ((Container)var12).add(this.filterComboBox);
  332.       ((Container)var8).add(var12);
  333.       ((Container)var8).add(Box.createRigidArea(hstrut10));
  334.       JPanel var14 = new JPanel();
  335.       ((Container)var14).setLayout(new BoxLayout(var14, 1));
  336.       new Dimension();
  337.       this.approveButton = new 2(this, ((BasicFileChooserUI)this).getApproveButtonText(var1));
  338.       this.approveButton.setMnemonic(((BasicFileChooserUI)this).getApproveButtonMnemonic(var1));
  339.       this.approveButton.addActionListener(((BasicFileChooserUI)this).getApproveSelectionAction());
  340.       this.approveButton.setToolTipText(((BasicFileChooserUI)this).getApproveButtonToolTipText(var1));
  341.       ((Container)var14).add(this.approveButton);
  342.       ((Container)var14).add(Box.createRigidArea(vstrut10));
  343.       this.cancelButton = new 3(this, super.cancelButtonText);
  344.       this.cancelButton.setMnemonic(super.cancelButtonMnemonic);
  345.       this.cancelButton.setToolTipText(super.cancelButtonToolTipText);
  346.       this.cancelButton.addActionListener(((BasicFileChooserUI)this).getCancelSelectionAction());
  347.       ((Container)var14).add(this.cancelButton);
  348.       ((Container)var8).add(var14);
  349.       ((Container)var8).add(Box.createRigidArea(hstrut10));
  350.    }
  351.  
  352.    protected void installStrings(JFileChooser var1) {
  353.       super.installStrings(var1);
  354.       this.lookInLabelMnemonic = UIManager.getInt("FileChooser.lookInLabelMnemonic");
  355.       this.lookInLabelText = UIManager.getString("FileChooser.lookInLabelText");
  356.       this.fileNameLabelMnemonic = UIManager.getInt("FileChooser.fileNameLabelMnemonic");
  357.       this.fileNameLabelText = UIManager.getString("FileChooser.fileNameLabelText");
  358.       this.filesOfTypeLabelMnemonic = UIManager.getInt("FileChooser.filesOfTypeLabelMnemonic");
  359.       this.filesOfTypeLabelText = UIManager.getString("FileChooser.filesOfTypeLabelText");
  360.       this.upFolderToolTipText = UIManager.getString("FileChooser.upFolderToolTipText");
  361.       this.upFolderAccessibleName = UIManager.getString("FileChooser.upFolderAccessibleName");
  362.       this.homeFolderToolTipText = UIManager.getString("FileChooser.homeFolderToolTipText");
  363.       this.homeFolderAccessibleName = UIManager.getString("FileChooser.homeFolderAccessibleName");
  364.       this.newFolderToolTipText = UIManager.getString("FileChooser.newFolderToolTipText");
  365.       this.newFolderAccessibleName = UIManager.getString("FileChooser.newFolderAccessibleName");
  366.       this.listViewButtonToolTipText = UIManager.getString("FileChooser.listViewButtonToolTipText");
  367.       this.listViewButtonAccessibleName = UIManager.getString("FileChooser.listViewButtonAccessibleName");
  368.       this.detailsViewButtonToolTipText = UIManager.getString("FileChooser.detailsViewButtonToolTipText");
  369.       this.detailsViewButtonAccessibleName = UIManager.getString("FileChooser.detailsViewButtonAccessibleName");
  370.    }
  371.  
  372.    public void rescanCurrentDirectory(JFileChooser var1) {
  373.       ((BasicFileChooserUI)this).getModel().invalidateFileCache();
  374.       ((BasicFileChooserUI)this).getModel().validateFileCache();
  375.    }
  376.  
  377.    private void resetEditIndex() {
  378.       this.lastIndex = -1;
  379.    }
  380.  
  381.    public void setDirectoryName(String var1) {
  382.    }
  383.  
  384.    private void setEditIndex(int var1) {
  385.       this.lastIndex = var1;
  386.    }
  387.  
  388.    public void setFileName(String var1) {
  389.       if (this.filenameTextField != null) {
  390.          this.filenameTextField.setText(var1);
  391.       }
  392.  
  393.    }
  394.  
  395.    void setFileSelected() {
  396.       File var1 = ((BasicFileChooserUI)this).getFileChooser().getSelectedFile();
  397.       if (var1 != null && ((BasicFileChooserUI)this).getModel().contains(var1)) {
  398.          this.list.setSelectedIndex(((BasicFileChooserUI)this).getModel().indexOf(var1));
  399.          this.list.ensureIndexIsVisible(this.list.getSelectedIndex());
  400.       } else {
  401.          this.list.clearSelection();
  402.       }
  403.  
  404.    }
  405.  
  406.    public void uninstallUI(JComponent var1) {
  407.       var1.removePropertyChangeListener(this.filterComboBoxModel);
  408.       this.cancelButton.removeActionListener(((BasicFileChooserUI)this).getCancelSelectionAction());
  409.       this.approveButton.removeActionListener(((BasicFileChooserUI)this).getApproveSelectionAction());
  410.       this.filenameTextField.removeActionListener(((BasicFileChooserUI)this).getApproveSelectionAction());
  411.       super.uninstallUI(var1);
  412.    }
  413.  
  414.    public void valueChanged(ListSelectionEvent var1) {
  415.       File var2 = ((BasicFileChooserUI)this).getFileChooser().getSelectedFile();
  416.       if (!var1.getValueIsAdjusting() && var2 != null && !((BasicFileChooserUI)this).getFileChooser().isTraversable(var2)) {
  417.          this.setFileName(((BasicFileChooserUI)this).getFileChooser().getName(var2));
  418.       }
  419.  
  420.    }
  421. }
  422.